#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QListWidget>
#include <QLabel>
#include <QDebug>

/* 媒体信息结构体 */
struct MediaObjectInfo {
    QString fileName;
    QString filePath;
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    QMediaPlayer* musicPlayer = nullptr;/* 媒体播放器 */
    QMediaPlaylist* mediaPlaylist = nullptr;/* 媒体列表 */
    QListWidget* listWidget = nullptr;/* 音乐列表 */
    QSlider* durationSlider = nullptr;/* 播放进度条 */
    QPushButton* pushButton[7] = {nullptr};
    QVBoxLayout* vBoxLayout[3] = {nullptr};
    QWidget* vWidget[3] = {nullptr};
    QHBoxLayout* hBoxLayout[4] = {nullptr};
    QWidget* hWidget[4] = {nullptr};
    QLabel* label[4] = {nullptr};
    QWidget *listMask = nullptr;/* 用于遮罩 */

    QVector<MediaObjectInfo> mediaObjectInfo;/* 媒体信息存储 */

    void musicLayout();/* 音乐布局 */
    void resizeEvent(QResizeEvent* event);/* 主窗体大小重设 */
    void scanSongs();/* 扫描歌曲 */
    void mediaPlayerInit();/* 媒体播放器初始化 */
private slots:
    void btn_play_clicked();/* 播放 */
    void btn_next_clicked();/* 下一曲 */
    void btn_prev_clicked();/* 上一曲 */
    void mediaPlayerStatusChanged(QMediaPlayer::State);
    void listWidgetClicked(QListWidgetItem*);/* 媒体列表点击 */
    void mediaPlaylistCurrentIndexChanged(int);/* 媒体列表项改变 */
    void musicPlayerDurationChanged(quint64);/* 音乐总长度改变 */
    void mediaPlayerPositionChanged(quint64);/* 媒体播放位置改变 */
    void duratiuonSliderReleased();/* 播放进度松开 */
};

#endif // MAINWINDOW_H
